#ifndef VNAV_ROAD_NETWORK_H
#define VNAV_ROAD_NETWORK_H

#include "Junction.h"
#include "Roundabout.h"
#include "definitions\VNTypeDefs.h"

namespace vnav
{
	class RoadNetwork
	{
	public:
		typedef std::vector<Road*> Roads;
		typedef std::vector<Junction*> Junctions;
		typedef std::vector<RoadBlock*> RoadBlocks;
		typedef std::vector<Roundabout*> Roundabouts;

		RoadNetwork(const VNString& fileName);
		RoadNetwork(const RoadNetwork& other);
		RoadNetwork& operator=(const RoadNetwork& other);
		~RoadNetwork();

		RoadNetwork::Roundabouts getRoundabouts() const;
		RoadNetwork::Roads getRoads() const;
		RoadNetwork::Junctions getJunctions() const;
		RoadNetwork::RoadBlocks getRoadBlocks() const;
	private:
		Roads m_roads;
		Junctions m_junctions;
		RoadBlocks m_roadBlocks;
		Roundabouts m_roundabouts;
	};
}
#endif